<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Андрей
 * Date: 13.05.12
 * Time: 0:45
 * To change this template use File | Settings | File Templates.
 */

    /*
     * Контроллер комментариев
     */

    class CommentController extends ControllerAbstract
    {
        /*
         * По умолчанию
         */
        public   function index()
        {
            header("Location: http://myblog.local/users/");
            return ;
        }

        /*
         * Добавление комментария
         */
        public  function addComment($noteId)
        {
            if ( is_array($noteId) )
            {
                $noteId = array_shift($noteId);
            }
            // пользователь
            $user = UserModelMapper::getCurrentUser();

            // неавторизован
            if (! $user->isAuthorized() )
            {
                header("Location: http://myblog.local/auth/");
                return ;
            }

            // щелчок по кнопочке добавить заметку
            if (! isset($_POST['addComment']) )
            {
                header("Location: http://myblog.local/users/");
                return ;
            }

            // параметр заметки для комментирования
            // должен быть числом
            if (! is_numeric($noteId))
            {
                header("Location: http://myblog.local/users/");
                return ;
            }

            // мэпперы
            $cMapper = new CommentModelMapper();
            $nMapper = new NoteModelMapper();

            // проверить существует ли заметка, которой нужно добавить коммент
            if ( $note = $nMapper->fetchNoteById($noteId) )
            {
                $comment = new CommentModel($user->getId(), $note->getNoteId(), null,
                                            $_POST['commentText'], date("H:i"), date("j l"));

                $cMapper->saveComment($comment);
            }

            header("Location: http://myblog.local/users/");

        }

        /*
         * Удаление комментария
         */
        public function removeComment($commentId)
        {
            // вытащить параметр
            if ( is_array($commentId) )
            {
                $commentId = array_shift($commentId);
            }

            $user = UserModelMapper::getCurrentUser();

            if (! $user->isAuthorized() )
            {
                header("Location: http://myblog.local/auth/");
                return ;
            }

            if (! is_numeric($commentId) )
            {
                header("Location: http://myblog.local/users/");
                return ;
            }

            $cMapper = new CommentModelMapper();

            // если есть заметка
            if ($comment = $cMapper->fetchCommentById($commentId))
            {
                if ( $user->getId() == $comment->getUserId() )
                {
                    $cMapper->removeComment($comment);
                }
            }

            header("Location: http://myblog.local/users/");
            return ;
        }

    }
